public class Persoon
{
    private String burgerservicenummer;
    private String voornaam;
    private String achternaam;
    private int geboortedag;
    private int geboortemaand;
    private int geboortejaar;
    private char geslacht;
    private Dienblad dienbladper;


    /**
     * @setauthor Nick Tel en Wessel
     * hieronder worden de variabelnamen gedefinieerd van de class persoon
     */
    public Persoon (String burgerservicenummer, String voornaam, String achternaam, int geboortedag, int geboortemaand, int geboortejaar, char geslacht)
    {
        this.burgerservicenummer = burgerservicenummer;
        this.voornaam = voornaam;
        this.achternaam = achternaam;
        this.geboortedag = geboortedag;
        this.geboortemaand = geboortemaand;

        setDagMaandJaar(geboortedag, geboortemaand, geboortejaar);
        if (geboortejaar >1900 && geboortejaar <2100)
        {
            this.geboortejaar = geboortejaar;  
        }
        else 
        {
            System.out.println("Jaar moet tussen de 1900 en de 2100 zijn ");
        }

        if (geslacht=='m' || geslacht=='M' || geslacht=='v' || geslacht=='V')
        {
            this.geslacht = geslacht;  
        }
        else 
        {
            System.out.println("Je mag alleen een m/M of een v/V invullen ");
        }

    }

    public Persoon ()
    {
        setDagMaandJaar(0, 0, 0);
        setGeslacht('0');
    }

    /**
     * @setauthor Nick Tel
     * met deze functie kan u het burgerservicenummer van de betreffende persoon definieren
     */            
    public void setBurgerServiceNummer(String burgerservicenummer)
    {
        this.burgerservicenummer = burgerservicenummer;
    }

    /**
     * @setauthor Nick Tel
     * met deze functie kan u het burgerservicenummer van de personen opvragen
     */            
    public String getBurgerServiceNummer()
    {
        return burgerservicenummer;
    }

    /**
     * @setauthor Nick Tel
     * met deze functie kan u  de voor en achternaam van de persoon definieren
     */            
    public void setNaam(String voornaam, String achternaam)
    {
        this.voornaam = voornaam;
        this.achternaam = achternaam;
    }

    /**
     * @setauthor Wessel van Tamelen
     * met deze functie kunt u de geboortedatum veranderen (deze moet tussen de 1 en de 31 zijn en nog aan een paar andere conditie en dat ligt eraan wat de gebruiker invoegd)
     */            

    public void setDagMaandJaar(int geboortedag, int geboortemaand, int geboortejaar)
    {

        switch (geboortemaand) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
            if(geboortedag>0 && geboortedag<32)
            {
                this.geboortedag = geboortedag;
                this.geboortemaand = geboortemaand;
                this.geboortejaar = geboortejaar;
            }
            else {
                System.out.println("De maanden Januari, Maart, Mei, Juli, Augustus, Oktober en December hebben 31 dagen.");
            }
            break;
            case 2:
            if(geboortejaar % 4 == 0 && geboortejaar % 400 != 0 && geboortejaar % 100 != 0 && geboortedag>0 && geboortedag<30)
            {  
                this.geboortedag = geboortedag;
                this.geboortemaand = geboortemaand;
                this.geboortejaar = geboortejaar;  
            }

            else if(geboortejaar % 4 != 0 && geboortejaar % 400 == 0 && geboortejaar % 100 == 0 && geboortedag>0 && geboortedag<29)
            {
                this.geboortedag = geboortedag;
                this.geboortemaand = geboortemaand;
                this.geboortejaar = geboortejaar;
            }
            else {
                System.out.println("Februari heeft 28 dagen.");
            }
            break;
            case 4:
            case 6:
            case 9:
            case 11:
            if(geboortedag>0 && geboortedag<31)
            {
                this.geboortedag = geboortedag;
                this.geboortemaand = geboortemaand;
                this.geboortejaar = geboortejaar;
            }
            else {
                System.out.println("De maanden April, Juni, September, November hebben 30 dagen.");
            }
            break;
            default:
        }
    }

    /**
     * @setauthor Wessel van Tamelen
     * met deze functie kunt u het geslacht aanpassen
     */            
    public void setGeslacht(char geslacht)
    {
        if (geslacht=='m' || geslacht=='M' || geslacht=='v' || geslacht=='V' || geslacht=='0')
        {
            this.geslacht = geslacht;  
        }
        else 
        {
            System.out.println("Je mag alleen een m of een v invullen ");
        }
    }

    /**
     * @setauthor Wessel van Tamelen
     * @Getter voor geboortedatum
     * @return Geboortedatum
     */
    public String getGeboorteDatum()
    {
        String gebdat;
        if (geboortedag==0 && geboortemaand==0 && geboortejaar==0)
        {
            gebdat="Onbekend";
        }
        else
        {
            gebdat=geboortedag+"/"+geboortemaand+"/"+geboortejaar;
        }
        return gebdat;
    }


    /** 
     * @setauthor Wessel van Tamelen
     * @Getter voor geslacht
     * @return Geslacht
     */
    public String getGeslacht()
    {
        String gesl;
        if (geslacht=='v' || geslacht=='V')
        {
            gesl="Vrouw"; 
        }
        else if (geslacht=='m' || geslacht=='M')
        {
            gesl="Man";
        }
        else
        {
            gesl="Onbekend";
        }
        return gesl;
    }

    /**
     * @setauthor Wessel van Tamelen
     * @Getter voor voor- en achternaam
     * @return voor- en achternaam
     */
    public String getVoornaamAchternaam()
    {
        String vnan;
        if (voornaam=="" && achternaam=="")
        {
            vnan="Onbekend";
        }
        else
        {
            vnan=voornaam+" "+achternaam;
        }
        return vnan;
    }

    /**
     * @setauthor Wessel van Tamelen
     * @Print Persoon gegevens
     */
    public void printPersoon()
    {

        // Print hier de gegevens van de Persoon.
        System.out.println("##################");
        System.out.println("Burgerservicenummer: " + burgerservicenummer + "");
        System.out.println("Voornaam: "+ voornaam + "");
        System.out.println("Achternaam: "+ achternaam + "");
        System.out.println("Geboorte datum: "+ geboortedag + "-" + geboortemaand + "-" + geboortejaar + "");
        System.out.println("##################");
        System.out.println();

    }

    /** 
     * Methode om dienblad te koppelen aan een persoon 
     * @param dienblad 
     */ 
    public void pakDienblad(Dienblad dienblad)  
    { 

        if (dienbladper == null)
        {
            dienbladper=dienblad;
        }
        else 
        {
            System.out.println("U heeft al een dienblad");
        }
    } 

    /** 
     * Methode om artikel te pakken en te plaatsen op het dienblad 
     * @param artikel 
     */ 
    public void pakArtikel(Artikel artikel)  
    { 
        if (dienbladper != null)
        {
            dienbladper.voegToe(artikel);
        }
        else 
        {
            System.out.println("U heeft nog geen dienblad");
        }
    } 

    public Dienblad getDienblad() 
    { 

        return dienbladper;
    }        

    /** 
     * Methode om de totaalprijs van de artikelen  
     * op dienblad dat bij de persoon hoort uit te rekenen 
     * @return De totaalprijs 

    public double getTotaalPrijs() 
    { 
    return dienbladper.getTotaalPrijs();
    } 
     */        

    /** 
     * Methode om het aantal artikelen op dienblad dat bij de  
     * persoon hoort te tellen 
     * @return Het aantal artikelen 

    public int getAantalArtikelen()  
    { 
    return dienbladper.getAantalArtikelen();     
    }          
     */        

}
